/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Datos;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author Rodrigo Uzcátegui
 */
public class Producto
{
    private String Nombre, Descripción, Rubro, URLImágen, Tamaño, Código, Unidad;
    private String[] Ingredientes;
    private Date fechaCaducidad, fechaElaboración;
    private Oferta oferta;
    private Medidas Empaque;
    private boolean esProductoPropio, Perecedero, bajoRégimenPrecios;
    private float Temperatura;
    private int Cantidad;
    private double Precio, PVP;     //PVP = Precio de Venta al Público

    private char estatus = 'a';
     /*estatus será un atributo  que determinará si  el producto se encuentra  en inventario
       o está eliminado. Si se elimina, su estatus cambiará más se verá reflejado que estuvo
       en inventario alguna vez.    Estatus a = active (activado)
                                    Estatus i = inactive (desactivado)                      */

    public String getNombre() {
        return Nombre;
    }
    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }
    public int getCantidad() {
        return Cantidad;
    }
    public void setCantidad(int Cantidad) {
        this.Cantidad = Cantidad;
    }
    public String getCódigo() {
        return Código;
    }
    public void setCódigo(String Código) {
        this.Código = Código;
    }
    public String getDescripción() {
        return Descripción;
    }
    public void setDescripción(String Descripción) {
        this.Descripción = Descripción;
    }
    public Medidas getEmpaque() {
        return Empaque;
    }
    public void setEmpaque(float altura, float profundidad, float ancho) //set Modificado
    {
        this.Empaque = new Medidas(altura, profundidad, ancho);
    }
    public void setEmpaque(String cadenaEntera) //set Modificado
    {
        String[] parámetrosEnArray = cadenaEntera.split("/");
        float altura, profundidad, ancho;
        altura = Float.parseFloat(parámetrosEnArray[0]);
        profundidad = Float.parseFloat(parámetrosEnArray[1]);
        ancho = Float.parseFloat(parámetrosEnArray[2]);
        setEmpaque(altura, profundidad, ancho);
    }
    public double getPVP() {
        return PVP;
    }
    public void setPVP(double PVP) {
        this.PVP = PVP;
    }
    public boolean isPerecedero() {
        return Perecedero;
    }
    public void setPerecedero(boolean Perecedero) {
        this.Perecedero = Perecedero;
    }
    public double getPrecio() {
        return Precio;
    }
    public void setPrecio(double Precio) {
        this.Precio = Precio;
    }
    public String getRubro() {
        return Rubro;
    }
    public void setRubro(String Rubro) {
        this.Rubro = Rubro;
    }
    public String getURLImágen() {
        return URLImágen;
    }
    public void setURLImágen(String URLImágen) {
        this.URLImágen = URLImágen;
    }
    public String getUnidad() {
        return Unidad;
    }
    public void setUnidad(String Unidad) {
        this.Unidad = Unidad;
    }
    public boolean isBajoRégimenPrecios() {
        return bajoRégimenPrecios;
    }
    public void setBajoRégimenPrecios(boolean bajoRégimenPrecios) {
        this.bajoRégimenPrecios = bajoRégimenPrecios;
    }
    public Date getFechaCaducidad() {
        return fechaCaducidad;
    }
    public void setFechaCaducidad(String fechaCaducidad) // set Modificado
    {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
        try
        {
            this.fechaCaducidad = simpleDateFormat.parse(fechaCaducidad);
        }
        catch (ParseException parseException) {}
    }
    public Oferta getOferta() {
        return oferta;
    }
    public void setOferta(boolean poseeOferta, float porcentaje) // set Modificado
    {
        this.oferta = new Oferta(poseeOferta, porcentaje);
    }
    public String[] getIngredientes() {
        return Ingredientes;
    }
    public void setIngredientes(String[] Ingredientes) // set Modificado
    {
        //Hay que modificar este set, para que el parámetro que se pase sea un string como 'comas' (,)
        //y con un string split separar la cadena de caracteres
        this.Ingredientes = Ingredientes;
    }
    public String getTamaño() {
        return Tamaño;
    }
    public void setTamaño(String Tamaño) {
        this.Tamaño = Tamaño;
    }
    public float getTemperatura() {
        return Temperatura;
    }
    public void setTemperatura(float Temperatura) {
        this.Temperatura = Temperatura;
    }
    public boolean isEsProductoPropio() {
        return esProductoPropio;
    }
    public void setEsProductoPropio(boolean esProductoPropio) {
        this.esProductoPropio = esProductoPropio;
    }
    public Date getFechaElaboración() {
        return fechaElaboración;
    }
    public void setFechaElaboración(String fechaElaboración) // set Modificado
    {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
        try
        {
            this.fechaCaducidad = simpleDateFormat.parse(fechaElaboración);
        }
        catch (ParseException parseException) {}
    }
    public char getEstatus() {
        return estatus;
    }
    public void setEstatus(char estatus) {
        this.estatus = estatus;
    }

    @Override
    public String toString()
    {
        String cadena = "---" + this.getNombre() + "---\n";
        SimpleDateFormat formatoDeFechas = new SimpleDateFormat("dd-MM-yyyy");

        if(getEstatus() == 'i')
        {
            cadena += "El Producto" + getNombre() + " no se encuentra en inventario. Producto eliminado\n";
            cadena += "Código: " + this.getCódigo() + "\n";
            cadena += "Rubro: " + this.getRubro() + "\n";
            cadena += "Descripción: " + this.getDescripción() + "\n";
            cadena += "Ingredientes: ";                         //***************************//
            int numIngr = this.getIngredientes().length;        //                           //
            for (int i = 0; i <= numIngr - 1; i++)              //                           //
            {                                                   //                           //
                if (i == numIngr - 1)                           // Código para  imprimir los //
                {                                               // ingredientes del producto //
                    cadena += this.getIngredientes()[i];        //                           //
                    break;                                      //                           //
                }                                               //                           //
                cadena += this.getIngredientes()[i] + ", ";     //                           //
            }                                                   //                           //
            cadena += "\n";                                     //***************************//
            if(!isPerecedero())
            {
                cadena += "El producto no es perecedero\n";
                cadena += "No necesita temperatura de conservación\n";
            }
            else
            {
                cadena += "El producto es perecedero\n";
                cadena += "El producto debe estar en " + this.getTemperatura() + " grados para conservarse\n";
            }
            if (!esProductoPropio)
            {
                cadena += "El producto no está elaborado por el supermercado\n";
                cadena += "Fecha de Elaboración: NO APLICA \n";
            }
            else
            {
                cadena += "El producto está elaborado por el supermercado\n";
                cadena += "Fecha de Elaboración: " + formatoDeFechas.format(this.getFechaElaboración()) + "\n";
            }
            cadena += "Unidad: En " + this.getUnidad() + "\n";
            cadena += this.getEmpaque() + "\n";
            cadena += "Tamaño: " + this.getTamaño() + "\n";
            cadena += "Dirección de Imágen: " + this.getURLImágen() + "\n";
        }
        else
        {
            cadena += "Producto: " + this.getNombre() + "\n";
            cadena += "Rubro: " + this.getRubro() + "\n";
            cadena += "Descripción: " + this.getDescripción() + "\n";
            cadena += "Ingredientes: ";                         //***************************//
            int numIngr = this.getIngredientes().length;        //                           //
            for (int i = 0; i <= numIngr - 1; i++)              //                           //
            {                                                   //                           //
                if (i == numIngr - 1)                           // Código para  imprimir los //
                {                                               // ingredientes del producto //
                    cadena += this.getIngredientes()[i];        //                           //
                    break;                                      //                           //
                }                                               //                           //
                cadena += this.getIngredientes()[i] + ", ";     //                           //
            }                                                   //                           //
            cadena += "\n";                                     //***************************//
            if (!esProductoPropio)
            {
                cadena += "El producto no está elaborado por el supermercado\n";
                cadena += "Fecha de Elaboración: NO APLICA \n";
            }
            else
            {
                cadena += "El producto está elaborado por el supermercado\n";
                cadena += "Fecha de Elaboración: " + formatoDeFechas.format(this.getFechaElaboración()) + "\n";
            }
            cadena += "Fecha de Caducidad: " + formatoDeFechas.format(this.getFechaCaducidad()) + "\n";
            cadena += "Precio: " + this.getPrecio() + " Bs. F.\n";
            cadena += "Precio de Venta al Público (PVP): " + this.getPVP() + " Bs. F.\n";
            if (isBajoRégimenPrecios())
                cadena += "El producto está regulado\n";
            else
                cadena += "El producto no está regulado\n";
            if(!isPerecedero())
            {
                cadena += "El producto no es perecedero\n";
                cadena += "No necesita temperatura de conservación\n";
            }
            else
            {
                cadena += "El producto es perecedero\n";
                cadena += "El producto debe estar en " + this.getTemperatura() + " grados para conservarse\n";
            }
            cadena += "Unidad: En " + this.getUnidad() + "\n";
            cadena += "Tamaño: " + this.getTamaño() + "\n";
            cadena += this.getEmpaque() + "\n";
            cadena += this.getOferta() + "\n";
            cadena += "Cantidad en almacén: " + this.getCantidad() + " unidades\n";
            cadena += "Código: " + this.getCódigo() + "\n";
            cadena += "Dirección de Imágen: " + this.getURLImágen() + "\n";
        }
        return cadena;
    }
}
